package com.myaihui.service.impl;

import com.myaihui.domain.Banner;
import com.myaihui.repository.BannerRepository;
import com.myaihui.service.BannerService;
import org.apache.shiro.util.Assert;
import org.apache.shiro.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by sun on 2018/7/6.
 *
 * @author sunfuchang03@126.com
 * @version 1.0
 * @since 1.0
 */
@Service
public class BannerServiceImpl implements BannerService {
    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Static fields/constants/initializer
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    private static Logger log = LoggerFactory.getLogger(BannerServiceImpl.class);

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Instance fields
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    @Autowired
    private BannerRepository bannerRepository;

    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Constructors
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */



    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Public Methods
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */

    @Override
    public boolean insert(String url, String target, Integer picType, String activeName) {
        Assert.notNull(url);
        Banner banner = new Banner();
        banner.setUrl(url);
        banner.setTarget(target);
        banner.setPicType(picType);
        banner.setActiveName(activeName);
        bannerRepository.save(banner);
        return true;
    }

    @Override
    public boolean update(String id, String target, Integer rank) {
        Banner banner = bannerRepository.findOne(id);
        if (banner != null) {
            if (StringUtils.hasLength(target)) {
                banner.setTarget(target);
            }
            if (rank != null) {
                banner.setRank(rank);
            }
            bannerRepository.save(banner);
            return true;
        }
        return false;
    }

    @Override
    public boolean delete(String id) {
        bannerRepository.delete(id);
        return true;
    }

    @Override
    public List<Banner> queryAllEnable() {
        return bannerRepository.findByVisible(Boolean.TRUE);
    }

    @Override
    public List<Banner> queryAll() {
        return bannerRepository.findAll();
    }

    @Override
    public boolean doHide(String id) {
        Banner banner = bannerRepository.findOne(id);
        if (banner != null) {
            banner.setVisible(false);
            bannerRepository.save(banner);
            return true;
        }
        return false;
    }

    @Override
    public boolean doShow(String id) {
        Banner banner = bannerRepository.findOne(id);
        if (banner != null) {
            banner.setVisible(true);
            bannerRepository.save(banner);
            return true;
        }
        return false;
    }
    
    /*
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     *
     * Private Methods
     *
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */


}